using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Runtime.Serialization;
using System.Xml.Serialization;
using Cuahsi.Data.Interop.WaterML2.om_20;
using Renci.Data.Interop.OpenGIS.Gml_32;

namespace Cuahsi.Data.Interop.WaterML2
{
    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.Xml", "4.0.30319.233")]
    [Serializable()]
    [DebuggerStepThrough()]
    [DesignerCategory("code")]
    [XmlType(Namespace = "http://www.opengis.net/waterml/2.0")]
    [XmlRoot("ObservationProcess", Namespace = "http://www.opengis.net/waterml/2.0", IsNullable = false)]
    [DataContract(Name = "ObservationProcessType", Namespace = "http://www.opengis.net/waterml/2.0")]
    public partial class ObservationProcessType : AbstractFeatureType
    {

        private ReferenceType processTypeField;

        private ReferenceType originatingProcessField;

        private string aggregationDurationField;

        private ReferenceType verticalDatumField;

        private List<string> commentField;

        private ReferenceType processReferenceField;

        private List<ReferenceType> inputField;

        private List<NamedValuePropertyType> parameterField;

        public ObservationProcessType()
        {
            this.parameterField = new List<NamedValuePropertyType>();
            this.inputField = new List<ReferenceType>();
            this.commentField = new List<string>();
        }

        [DataMember()]
        public ReferenceType processType
        {
            get
            {
                return this.processTypeField;
            }
            set
            {
                this.processTypeField = value;
            }
        }

        [DataMember()]
        public ReferenceType originatingProcess
        {
            get
            {
                return this.originatingProcessField;
            }
            set
            {
                this.originatingProcessField = value;
            }
        }

        [XmlElement(DataType = "duration")]
        [DataMember()]
        public string aggregationDuration
        {
            get
            {
                return this.aggregationDurationField;
            }
            set
            {
                this.aggregationDurationField = value;
            }
        }

        [DataMember()]
        public ReferenceType verticalDatum
        {
            get
            {
                return this.verticalDatumField;
            }
            set
            {
                this.verticalDatumField = value;
            }
        }

        [XmlElement("comment")]
        [DataMember()]
        public List<string> comment
        {
            get
            {
                return this.commentField;
            }
        }

        [DataMember()]
        public ReferenceType processReference
        {
            get
            {
                return this.processReferenceField;
            }
            set
            {
                this.processReferenceField = value;
            }
        }

        [XmlElement("input")]
        [DataMember()]
        public List<ReferenceType> input
        {
            get
            {
                return this.inputField;
            }
        }

        [XmlElement("parameter")]
        [DataMember()]
        public List<NamedValuePropertyType> parameter
        {
            get
            {
                return this.parameterField;
            }
        }
    }
}